#!/bin/bash

MODEM_TYPE=""
MODEM_IFACE=""
PROVIDER=""

# Если /dev/log не существует, то скрипт просто не сможет работать, поэтому
# проверяем и ждем, пока не появится. Необходимо, если скрипт пихать в автозагрузку.
while [ ! -w /dev/log ]; do sleep 1 ; done ;

# Это чтобы не запускать за один раз несколько скриптов.
if [ ! -e /var/lock/uzpppoe.lock ]; then
 touch /var/lock/uzpppoe.lock

 echo -e "\nЗапуск...\n"
 # Убиваем конфликтующие процессы, если они запущены:
 pidof pppd > /dev/null && kill `pidof pppd`
 pidof br2684ctl > /dev/null && kill `pidof br2684ctl`
 #pidof nm-applet > /dev/null && kill `pidof nm-applet`
 #pidof NetworkManager > /dev/null && kill `pidof NetworkManager`
 #pidof NetworkManagerDispatcher > /dev/null && kill `pidof NetworkManagerDispatcher`

 # Проверяем, загружен ли модуль модема и если да - то выгружаем его, чтобы сбросить
 # текущие соединения и перенастроить все заново:
 lsmod | grep speedtch > /dev/null && modprobe -r speedtch
 modprobe speedtch

 for (( i=1; i<61; i++ )); do
   echo -e "\nПопытка $i\n"
   # В этом файле содержиться вся информация о статусе модема, линии и т.п. Поэтому, 
   # берем инфу от туда. Лучше, чем грепать dmesg, в котором если модем хоть один раз
   # запускали, то во второй раз запустить не получиться.
   if [ -e /proc/net/atm/speedtch\:0 ]; then
     echo -e "\nМодем найден, синхронизируется линия...\n" &&\
     # Собственно, если модем удачно синхронизировался с линией, то в статусе будет это:
     grep "Line up" /proc/net/atm/speedtch\:0 > /dev/null &&\
     echo -e "\nЛиния синхронизирована\n" &&\
     # А вот и сама тулза, которая настраивает VPI.VCI:
     br2684ctl -b -c 0 -a 8.35 &&\
     echo -e "\nbr2684ctl успешно запущен\n" &&\
     # После этой тулзы, появится сетевой интерфейс nas0, с которым можно делать 
     # практическ все тоже самое, что и с обычным интерфейсом.
     dhclient nas0 &&\
     echo -e "\nIP-адрес получен\n" &&\
     # Для некоторых провайдеров нужно прописать статические роутинги:
     route add 213.206.34.5 dev nas0 &&\
     route add -net 10.0.0.0 netmask 255.0.0.0 dev nas0 &&\
     echo -e "\nМаршруты настроены\n" &&\
     break
   else
     echo -e "\nМодем не подключен\n"
   fi
   sleep 1
 done
 rm /var/lock/uzpppoe.lock
else
echo -e "\nСкрипт уже запущен в памяти\n"
fi
